7829. Сумма элементов

 

Задана последовательность из n действительных чисел. Найдите сумму всех ее элементов.

 

Вход. В первой строке задано число n (n ≤ 100). Во второй строке записано n действительных чисел, каждое из которых по модулю не превышает 100.

 

Выход. Выведите сумму всех элементов последовательности с одним десятичным знаком.

 

Пример входа

Пример выхода

5

1.2 1.3 5.7 1.8 12.4

22.4

 

 

РЕШЕНИЕ

циклы

 

Анализ алгоритма

Находим сумму чисел при помощи цикла.

 

Реализация алгоритма

Объявим рабочий массив.

 

double m[100];

 

Читаем входные данные.

 

scanf("%d",&n);

for (i = 0; i < n; i++)

  scanf("%lf",&m[i]);

 

В переменной s находим сумму всех чисел массива m.

 

s = 0;

for (i = 0; i < n; i++)

  s = s + m[i];

 

Выводим искомую сумму.

 

printf("%.1lf\n",s);

 

Реализация алгоритма – цикл

Читаем количество чисел n.

 

scanf("%d",&n);

 

В переменной s находим сумму n чисел.

 

s = 0;

for (i = 0; i < n; i++)

{

  scanf("%lf",&x);

  s = s + x;

}

 

Выводим ответ.

 

printf("%.1lf\n",s);

 

Реализация алгоритма – вектор

Для хранения входного массива объявим вектор m.

 

vector<double> m;

 

Читаем входные данные.

 

scanf("%d", &n);

m.resize(n);

for (i = 0; i < n; i++)

  scanf("%lf", &m[i]);

 

В переменной s находим сумму всех чисел массива m.

 

s = 0;

for (i = 0; i < n; i++)

  s = s + m[i];

 

Выводим ответ.

 

printf("%.1lf\n", s);

 

Реализация алгоритма – accumulate

Для хранения входного массива объявим вектор v.

 

vector<double> v;

 

Читаем входные данные.

 

scanf("%d", &n);

v.resize(n);

for (i = 0; i < n; i++)

  scanf("%lf", &v[i]);

 

Cумму чисел массива v вычислим при помощи функции accumulate.

 

s = accumulate(v.begin(), v.end(), 0.0);

 

Выводим ответ.

 

printf("%.1lf\n", s);

 

Реализация алгоритма – динамическое выделение памяти, malloc

 

#include <stdio.h>

#include <malloc.h>

 

int i, n;

double s, *m;

 

int main(void)

{

  scanf("%d", &n);

  m = (double *)malloc(n * sizeof(double));

 

  for (i = 0; i < n; i++) // read array

    scanf("%lf", &m[i]);

 

  s = 0; // find the sum of array elements

  for (i = 0; i < n; i++)

    s = s + m[i];

 

  free(m);

  printf("%.1lf\n", s); // print the answer

  return 0;

}

 

Реализация алгоритма – динамическое выделение памяти, calloc

 

#include <stdio.h>

#include <malloc.h>

 

int i, n;

double s, *m;

 

int main(void)

{

  scanf("%d", &n);

  m = (double *)calloc(n, sizeof(double));

 

  for (i = 0; i < n; i++) // read array

    scanf("%lf", &m[i]);

 

  s = 0; // find the sum of array elements

  for (i = 0; i < n; i++)

    s = s + m[i];

 

  free(m);

  printf("%.1lf\n", s); // print the answer

  return 0;

}

 

Реализация алгоритма – динамическое выделение памяти, new

 

#include <stdio.h>

 

int i, n;

double s;

double *m;

 

int main(void)

{

  scanf("%d",&n);

 

  // allocate memory for array

  m = new double[n];

 

  // read array

  for(i = 0; i < n; i++)

    scanf("%lf",m+i); // m + i = &m[i]

 

  // find the sum of array elements

  s = 0;

  for(i = 0; i < n; i++)

    s = s + m[i];

 

  // print the answer

  printf("%.1lf\n",s);

 

  // deallocate the array memory

  delete[] m;

 

  return 0;

}

 

 

Реализация алгоритма – использование файлов

При работе с файлами в системе e-olymp используются:

input.txt – входной файл;

output.txt – выходной файл;

При отправке решений с файлами следует выбрать опцию “Решение использует файлы для чтения и записи”.

 

#include <stdio.h>

 

int i, n;

double s, m[100];

 

int main(void)

{

  freopen("input.txt","r",stdin);

  freopen("output.txt","w",stdout);

  scanf("%d",&n);

 

  // read array

  for(i = 0; i < n; i++)

    scanf("%lf",&m[i]);

 

  // find the sum of array elements

  s = 0;

  for(i = 0; i < n; i++)

    s = s + m[i];

 

  // print the answer

  printf("%.1lf\n",s);

  return 0;

}

 

Java реализация

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    con.useLocale(Locale.US);

    int n = con.nextInt();

    double sum = 0;

    for (int i = 0; i < n; i++)

    {

      double val = con.nextDouble();

      sum += val;

    }

    System.out.printf("%.1f",sum);

    con.close();

  }

}

 

Java реализация – собственный класс

 

import java.util.*;

 

class Array

{

  private double[] m;

  private int size;

 

  public Array(int n)

  {

    size = n;

    m = new double[n];

  }

 

  public void set(int i, double value)

  {

    m[i] = value; 

  }

 

  public double getSum()

  {

    double s = 0;

    for(int i = 0; i < size; i++)

      s = s + m[i];

    return s;

  }

}

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    con.useLocale(Locale.US);

    int n = con.nextInt();

    Array a = new Array(n);

   

    for (int i = 0; i < n; i++)

      a.set(i,con.nextDouble());

 

    System.out.printf("%.1f",a.getSum());

    con.close();

  }

}

 

Python реализация

Читаем входные данные.

 

n = int(input())

m = list(map(float,input().split()))

 

Вычисляем и выводим ответ.

 

print(sum(m))